Model picker redesign: compact rows, catalog-driven short names#4067
Model picker redesign: compact rows, catalog-driven short names#4067SunkenInTime wants to merge 6 commits into
Conversation
…selection styling - Shorten display names in the picker (GPT-5.6-Sol -> 5.6 Sol, Claude Fable 5 -> Fable 5) via getModelPickerDisplayAlias, with unit tests - Hide the per-row provider line on single-provider tabs (the sidebar already shows the provider); keep it for search, favorites, and sub-provider models - Blue-tinted selected-row state, tighter row metrics (rounded-sm, text-sm) - Fix LegendList stale-row renders by passing all row-render inputs through extraData instead of only favoritesSet - Move the scrollbar styling class onto the actual LegendList scroll element; widen the scrollbar hit area with an inset pill thumb Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…talog Replaces the web-layer regex aliasing with catalog-driven shortName: - Claude built-in models get explicit shortName entries - Codex derives shortName at model-list parse time (toCodexShortName), so discovered GPT models render as e.g. "5.6 Sol" / "5.5" - Cursor/OpenCode/Grok models are intentionally left without shortName: their catalogs are dynamic multi-vendor lists - Display-name helpers extracted from providerIconUtils to modelDisplayNames.ts; the picker-only alias regexes are deleted - Picker rows always prefer shortName; extraData now carries filteredModelByKey and getModelDisabledReason so recycled rows cannot render stale disabled state Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Correctness/robustness: - Size the virtualized row estimate at 60 when any filtered model has a subProvider (those rows render the two-line layout even in single-provider tabs), preventing first-paint mis-measurement - Include toggleFavorite in LegendList extraData so recycled rows are invalidated by construction, not by favoritesSet changing in lockstep - Read the selected-row key from listExtraData.activeModelKey instead of recomputing it inline - Allow a fused version letter in toCodexShortName (GPT-4o -> "4o", GPT-4o-Mini -> "4o Mini") and cover the toDisplayName -> toCodexShortName chain with a parser-level test Dead code removal (pre-existing, surfaced by review): - Drop the getTriggerDisplayModelLabel pass-through alias and the never-true useTriggerLabel prop/branch in ModelListRow - Remove the unused providerAccentColor/instanceAccentColor plumbing - Collapse ProviderModelPicker's always-equal triggerLabel into triggerTitle Styling: - Model-picker scrollbar colors now track the theme border token via color-mix (dark-mode overrides removed), with a guarded scrollbar-width/scrollbar-color fallback so Firefox gets the shared thin treatment without disabling the WebKit inset pill Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Needs human review This PR introduces a UI redesign with new display logic (short name derivation, conditional provider display, compact rows). While changes are well-tested, UI redesigns of this scope benefit from human review to ensure design intent and user experience are as intended. You can customize Macroscope's approvability policy. Learn more. |
Dismissing prior approval to re-evaluate ce9893d
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ce9893d. Configure here.

What Changed
Why
The picker repeated provider information that was already visible in the sidebar and displayed long catalog names that made the list harder to scan. Using provider-supplied short names and a more compact row layout makes model selection faster and clearer while preserving full names where they carry useful context.
Validation:
vp check,vp run typecheck, and the full web unit suite (1,283 tests) pass.UI Changes
Before
Video.Project.7.mp4
After
Video.Project.4.mp4
Checklist
Note
Low Risk
UI and display-metadata changes with unit tests; no auth, billing, or session runtime behavior changes.
Overview
Redesigns the model picker for faster scanning: tighter row spacing, blue-tinted selection,
rounded-smstyling, and theme-aware pill scrollbars. Provider names on each row now show only in favorites, search, or when a sub-provider is set—not on single-provider sidebar tabs.Adds provider-authored
shortNamevalues for built-in Claude models and derives Codex short labels viatoCodexShortName(known GPT suffixes only; unknown/custom names stay unchanged). Display helpers move tomodelDisplayNames.ts; the picker trigger always prefers short names throughgetDisplayModelName.Fixes virtualized list staleness by bundling row state into
LegendListextraDataand tuningestimatedItemSizefor one- vs two-line rows. Removes unusedproviderAccentColor/useTriggerLabelprops from list rows.Reviewed by Cursor Bugbot for commit 45f954f. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Redesign model picker rows with compact layout and catalog-driven short names
shortNamefield to built-in Claude models and derives short names for Codex models via a newtoCodexShortNameutility in CodexProvider.ts.preferShortNameto rows, conditionally hides the provider line in single-provider tabs, and improves virtualization with stableextraDataand adjusted item size estimates.Macroscope summarized 45f954f.